<?php
require('fpdf16/fpdf.php');
require('n2t.class.php');
include ("../conectar.php");
include ("../include/tables_definition.php");
class PDFFactura extends FPDF
{   
    var $var_factura;
    var $Conn;
    var $trans;
    function PDFFactura($orientation='P',$unit='mm',$format='A4',$conn,$cod_factura)
    {        
        //Llama al constructor de la clase padre
        $this->FPDF($orientation,$unit,$format);
        $this->Conn =$conn;		
        $this->var_factura = $cod_factura;   
        $this->SetAutoPageBreak(false);
        $this->trans = new N2t();        
    }  
    function Body(){
        $consulta = "Select * from facturas,clientes where facturas.codfactura='$this->var_factura' and facturas.codcliente=clientes.codcliente";       
        $resultado = mysql_query($consulta, $this->Conn);
        $lafila=mysql_fetch_array($resultado);
        
        $consulta = "Select * from ".CUENTAS_COBRAR_TABLE." where cod_factura='$this->var_factura' order by vencimiento asc";       
        $resultado = mysql_query($consulta, $this->Conn);
        $vencimiento = '';
        while($row = mysql_fetch_array($resultado))        
            $vencimiento .=$fecha = substr($row["vencimiento"],8,2).'/'.substr($row["vencimiento"],5,2).' ';  
        
        $consulta = "Select * from moneda where codigo= ".$lafila["moneda"];       
        $result_moneda = mysql_query($consulta, $this->Conn);
        $array_moneda=mysql_fetch_array($result_moneda);        
        $decimales = $array_moneda['decimales'];
        $desc_moneda = $array_moneda['descripcion'];

        $x=0;
        $y=-4;
        $this->SetFillColor(255,255,255);
        $this->SetFont('Arial','B',8);	
        $this->SetXY($x+175,$y+11);	
        $this->Cell(30,3,$lafila["nrofactura"],0,0,'R');
        $this->SetXY($x+175,$y+19);	
        $this->Cell(30,3,$lafila["codfactura"],0,0,'R');    
        $this->SetXY($x+24,$y+28);	    
        $fecha = substr($lafila["fecha"],8,2).'/'.substr($lafila["fecha"],5,2).'/'.substr($lafila["fecha"],0,4);
        $this->Cell(30,3,$fecha,0,0,'L');   
        $this->SetXY($x+67,$y+28);	
        $this->Cell(30,3,  utf8_decode($lafila["nombre"])." (".$lafila["codcliente"].")",0,0,'L');      
        $this->SetXY($x+160,$y+28);	
        if(trim($lafila["telefono"]) == "")$lafila["telefono"] = "Falta definir";
        $this->Cell(30,3,$lafila["telefono"],0,0,'L');     
        //################################################################################
        $this->SetXY($x+26,$y+35);	    
        $this->Cell(30,3,"X",0,0,'L');      
        $this->SetXY($x+80,$y+35);	    
        $this->Cell(30,3,$lafila["ruc"],0,0,'L');          
        $this->SetXY($x+185,$y+35);	    
        $this->Cell(30,3,$lafila["condicionventa"],0,0,'L');        
        //################################################################################
        $this->SetXY($x+28,$y+42);	    
        if(trim($lafila["direccion"]) == "")$lafila["direccion"] = "Falta definir";
        $this->Cell(30,3,utf8_decode($lafila["direccion"]),0,0,'L');      
        $this->SetXY($x+160,$y+42);	    
        if(trim($lafila["localidad"]) == "")$lafila["localidad"] = "Falta definir";
        $this->Cell(30,3,utf8_decode($lafila["localidad"]),0,0,'L');    
        //################################################################################
        $this->SetXY($x+27,$y+48);	    
        //if(trim($lafila["direccion"]) == "")$lafila["direccion"] = "Falta definir";
        $this->Cell(30,3,'ADMIN',0,0,'L');      
        $this->SetXY($x+160,$y+48);	    
        if(trim($vencimiento) == "")$vencimiento = "Falta definir";
        $this->Cell(30,3,$vencimiento,0,0,'L');      
        //################################################################################
        $consulta = "Select * from ".FACTULINEA_TABLE." where codfactura='$this->var_factura' order by codigo asc";       
        $resultado = mysql_query($consulta, $this->Conn);      
        $fila = 0;
        $iva_excenta = 0;
        $iva_10 = 0; 
        
        while($row = mysql_fetch_array($resultado)){        
            $this->SetXY($x+51,$y+65+$fila);	            
            $this->Cell(30,3,$row['cantidad'],0,0,'L');
            $this->SetXY($x+60,$y+65+$fila);
            $this->Cell(30,3,utf8_decode($row['descripcion']),0,0,'L');
            $this->SetXY($x+132,$y+65+$fila);
            
            /*fede: hago todo este kilombo por que el pajero del otro programador creo todos los campos numericos como 
             * string y arma kilombo al momento de formatear.
             */
            if(trim($row['excentas']) == "") $row['excentas'] = '0,00';
            if(trim($row['precio']) == "") $row['precio'] = '0,00';
            if(trim($row['por10']) == "") $row['por10'] = '0,00';            
            $precio = $row['precio'];
            $monto_excenta = $row['excentas'];
            $monto_10 = $row['por10'];

            $precio = str_replace('.', '', $precio);
            $monto_excenta = str_replace('.', '', $monto_excenta);
            $monto_10 = str_replace('.', '', $monto_10);
            
            $precio = str_replace(',', '.', $precio);
            $monto_excenta = str_replace(',', '.', $monto_excenta);
            $monto_10 = str_replace(',', '.', $monto_10);
            
            $this->Cell(30,3,number_format($precio,$decimales,',','.'),0,0,'C');            
            $this->SetXY($x+150,$y+65+$fila);
            $this->Cell(30,3,number_format($monto_excenta,$decimales,',','.'),0,0,'C');            
            $this->SetXY($x+180,$y+65+$fila);
            $this->Cell(30,3,number_format($monto_10,$decimales,',','.'),0,0,'C');                                    
            $iva_10 += $monto_10;
            $iva_excenta += $monto_excenta;
            $fila +=3;
        }          
        $total_factura = $iva_10 + $iva_excenta;
        //################################################################################            
        $this->SetXY($x+145,$y+106);
        $this->Cell(30,3,number_format($iva_excenta,$decimales,',','.'),0,0,'C');      
        $this->SetXY($x+180,$y+106);	            
        $this->Cell(30,3,  number_format($iva_10,$decimales,',','.'),0,0,'C');  
        //################################################################################
        $monto_enletras = $this->trans->Convert($total_factura, "");
        $this->SetXY($x+34,$y+112);	
        switch ($lafila["moneda"]){
            case 1: 
                $desc_moneda = "Guaranies";
                $desc_decimales_moneda = '';
                break;
            case 2:
                $desc_moneda = "Dolares";                
                $aux = (string) $total_factura;
                $decimal_desc = substr( $aux, strpos( $aux, "." ) ); 
                if(strpos( $total_factura, "." ))
                    $desc_decimales_moneda = "centavos";
                else
                    $desc_decimales_moneda = "con 00/100";                
                break;
            default :
                $desc_moneda = $array_moneda['descripcion'];
                $desc_decimales_moneda = '';
                break;                                
        }
        $this->Cell(30,3,$desc_moneda.' '.strtolower($monto_enletras).' '.strtolower($desc_decimales_moneda),0,0,'L');         
        //################################################################################
        $this->SetXY($x+180,$y+115);	                            
        $this->Cell(30,3,number_format($total_factura, $decimales, ',', '.'),0,0,'C');      
        //################################################################################
        $iva_10 = $iva_10 / 11;
        $iva_10 = number_format($iva_10, $decimales, ',', '.');
        $this->SetXY($x+50,$y+125);	                    
        $this->Cell(30,3,'0',0,0,'L');              
        $this->SetXY($x+100,$y+125);	                    
        $this->Cell(30,3,$iva_10,0,0,'L');                      
        $this->SetXY($x+160,$y+125);	                    
        $this->Cell(30,3,$iva_10,0,0,'L');      
        
        //################################################################################
        //###########################     DUPLICADO    ###################################
        //################################################################################
        $x=0;
        $y=145;
        $this->SetFillColor(255,255,255);
        $this->SetFont('Arial','B',8);	
        $this->SetXY($x+175,$y+11);	
        $this->Cell(30,3,$lafila["nrofactura"],0,0,'R');
        $this->SetXY($x+175,$y+19);	
        $this->Cell(30,3,$lafila["codfactura"],0,0,'R');    
        $this->SetXY($x+24,$y+28);	    
        $fecha = substr($lafila["fecha"],8,2).'/'.substr($lafila["fecha"],5,2).'/'.substr($lafila["fecha"],0,4);
        $this->Cell(30,3,$fecha,0,0,'L');   
        $this->SetXY($x+67,$y+28);	
        $this->Cell(30,3,  utf8_decode($lafila["nombre"])." (".$lafila["codcliente"].")",0,0,'L');      
        $this->SetXY($x+160,$y+28);	
        if(trim($lafila["telefono"]) == "")$lafila["telefono"] = "Falta definir";
        $this->Cell(30,3,$lafila["telefono"],0,0,'L');     
        //################################################################################
        $this->SetXY($x+26,$y+35);	    
        $this->Cell(30,3,"X",0,0,'L');      
        $this->SetXY($x+80,$y+35);	    
        $this->Cell(30,3,$lafila["ruc"],0,0,'L');          
        $this->SetXY($x+185,$y+35);	    
        $this->Cell(30,3,$lafila["condicionventa"],0,0,'L');        
        //################################################################################
        $this->SetXY($x+28,$y+42);	    
        if(trim($lafila["direccion"]) == "")$lafila["direccion"] = "Falta definir";
        $this->Cell(30,3,utf8_decode($lafila["direccion"]),0,0,'L');      
        $this->SetXY($x+160,$y+42);	    
        if(trim($lafila["localidad"]) == "")$lafila["localidad"] = "Falta definir";
        $this->Cell(30,3,utf8_decode($lafila["localidad"]),0,0,'L');    
        //################################################################################
        $this->SetXY($x+27,$y+48);	    
        //if(trim($lafila["direccion"]) == "")$lafila["direccion"] = "Falta definir";
        $this->Cell(30,3,'ADMIN',0,0,'L');      
        $this->SetXY($x+160,$y+48);	    
        if(trim($vencimiento) == "")$vencimiento = "Falta definir";
        $this->Cell(30,3,$vencimiento,0,0,'L');      
        //################################################################################
        $consulta = "Select * from ".FACTULINEA_TABLE." where codfactura='$this->var_factura' order by codigo asc";       
        $resultado = mysql_query($consulta, $this->Conn);      
        $fila = 0;
        $iva_excenta = 0;
        $iva_10 = 0; 
        
        while($row = mysql_fetch_array($resultado)){        
            $this->SetXY($x+51,$y+65+$fila);	            
            $this->Cell(30,3,$row['cantidad'],0,0,'L');
            $this->SetXY($x+60,$y+65+$fila);
            $this->Cell(30,3,utf8_decode($row['descripcion']),0,0,'L');
            $this->SetXY($x+132,$y+65+$fila);
            
            /*fede: hago todo este kilombo por que el pajero del otro programador creo todos los campos numericos como 
             * string y arma kilombo al momento de formatear.
             */
            if(trim($row['excentas']) == "") $row['excentas'] = '0,00';
            if(trim($row['precio']) == "") $row['precio'] = '0,00';
            if(trim($row['por10']) == "") $row['por10'] = '0,00';            
            $precio = $row['precio'];
            $monto_excenta = $row['excentas'];
            $monto_10 = $row['por10'];

            $precio = str_replace('.', '', $precio);
            $monto_excenta = str_replace('.', '', $monto_excenta);
            $monto_10 = str_replace('.', '', $monto_10);
            
            $precio = str_replace(',', '.', $precio);
            $monto_excenta = str_replace(',', '.', $monto_excenta);
            $monto_10 = str_replace(',', '.', $monto_10);
            
            $this->Cell(30,3,number_format($precio,$decimales,',','.'),0,0,'C');            
            $this->SetXY($x+150,$y+65+$fila);
            $this->Cell(30,3,number_format($monto_excenta,$decimales,',','.'),0,0,'C');            
            $this->SetXY($x+180,$y+65+$fila);
            $this->Cell(30,3,number_format($monto_10,$decimales,',','.'),0,0,'C');                                    
            $iva_10 += $monto_10;
            $iva_excenta += $monto_excenta;
            $fila +=3;
        }          
        $total_factura = $iva_10 + $iva_excenta;
        //################################################################################            
        $this->SetXY($x+145,$y+106);
        $this->Cell(30,3,number_format($iva_excenta,$decimales,',','.'),0,0,'C');      
        $this->SetXY($x+180,$y+106);	            
        $this->Cell(30,3,  number_format($iva_10,$decimales,',','.'),0,0,'C');  
        //################################################################################
        $monto_enletras = $this->trans->Convert($total_factura, "");
        $this->SetXY($x+34,$y+112);	
        switch ($lafila["moneda"]){
            case 1: 
                $desc_moneda = "Guaranies";
                $desc_decimales_moneda = '';
                break;
            case 2:
                $desc_moneda = "Dolares";                
                $aux = (string) $total_factura;
                $decimal_desc = substr( $aux, strpos( $aux, "." ) ); 
                if(strpos( $total_factura, "." ))
                    $desc_decimales_moneda = "centavos";
                else
                    $desc_decimales_moneda = "con 00/100";                
                break;
            default :
                $desc_moneda = $array_moneda['descripcion'];
                $desc_decimales_moneda = '';
                break;                                
        }
        $this->Cell(30,3,$desc_moneda.' '.strtolower($monto_enletras).' '.strtolower($desc_decimales_moneda),0,0,'L');         
        //################################################################################
        $this->SetXY($x+180,$y+115);	                            
        $this->Cell(30,3,number_format($total_factura, $decimales, ',', '.'),0,0,'C');      
        //################################################################################
        $iva_10 = $iva_10 / 11;
        $iva_10 = number_format($iva_10, $decimales, ',', '.');
        $this->SetXY($x+50,$y+125);	                    
        $this->Cell(30,3,'0',0,0,'L');              
        $this->SetXY($x+100,$y+125);	                    
        $this->Cell(30,3,$iva_10,0,0,'L');                      
        $this->SetXY($x+160,$y+125);	                    
        $this->Cell(30,3,$iva_10,0,0,'L');      
    }
    function nameFormat($nombreCliente)
    {
                    $patron = "/^[[:alnum:]]+$/";
                    $nameFormateado = '';
                    for($i=0;$i<strlen($nombreCliente);$i++)
                    {
                            $caracter = $nombreCliente[$i];
                            if (preg_match($patron, $caracter)) 		 
                                                   $nameFormateado .= $caracter;
                            else
                                                   $nameFormateado .= '_';
                    }		
                    return $nameFormateado;
    }             
    function format($num,$decimales)
    {
        if(is_int($num))
        {
            $number = number_format($num);
            $number = preg_replace('/\,/','.',$number);
            return $number;
        }
        else{
            $num = preg_replace('/\,/','.',$num);
            $result =  number_format($num, $decimales, ',', '.');

            $result = preg_replace('/0*$/','',$result);
            return $result;
        }
    }
 
    

}
?>